package cn.tedu.myioc;

import java.util.*;

//自己实现IOC
public class MyIOC {
    //告诉spring框架，需要管理的bean有谁
    private List<Bean> beanfactory = new ArrayList<>();
    //初始化beanfactory
    public MyIOC() throws Exception {
        Bean b1 = new Bean("user","cn.tedu.myioc.User");
        Bean b2 = new Bean("data","cn.tedu.myioc.Data");
        Collections.addAll(beanfactory,b1,b2);//一次性将b1 b2加入集合
        //进行IOC
        createObj();
    }
    Map<String,Object> map = new HashMap<>();
    //3.进行IOC，核心就是Map里put（bean的name属性的值，根据bean的path值创建对象）
    public void createObj() throws Exception {

        for (Bean b : beanfactory){
            String k = b.getName();//"user"  "data"
            Object v = Class.forName(b.getPath()).newInstance();//new User ,  new Data
            map.put(k,v);//{"user"=new User(),"data"=new Data()}
        }
    }
    //getBean返回创建好的对象
    public Object getBean(String key){
        //拿着类名，去map里找对应的value（创建好的对象）
        return map.get(key);
    }
}
